package p.ithorns.tools.translator.annotation;

import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;

/**
 * 转换器接口
 * 支持自定义注解
 *
 * @author ithorns
 * @date 2022-9-27
 */
public interface Translator<T extends Serializable, A extends Annotation> {

    /**
     * 翻译
     *
     * @param originalValue 转换之前的原始值
     * @param annotation    自定义注解
     * @return 翻译后的值
     */
    String translate(A annotation, T originalValue);


    default Map<T, Object> translate(A annotation, Set<T> ids) {
        HashMap<T, Object> result = new HashMap<>();
        for (T ref : ids) {
            String translate = translate(annotation, ref);
            result.put(ref, translate);
        }
        return result;
    }

}